Modern vehicles often incorporate a number of electronic control units which execute application software and communicate with each other via a bus network. Examples of such vehicle control units, or controllers, include body controllers, passive restraint controllers, wireless communication controllers, and so forth. Periodically a need arises to reprogram or update the application software in one of these controllers.
Depending on the architecture of a controller's reprogramming function, reprogramming the vehicle controller may be a time consuming and risky task. For example, the reprogramming architecture of some vehicle control units dictates that the unit be removed from the vehicle. Removing the control unit from the vehicle for reprogramming results in an undesirable expenditure of time, and also increases the risk that the vehicle or the controller may be damaged in the process by being scratched or dented, by bending the electrical contacts making the electrical connection between the control unit to the vehicle wiring harness, or by electrostatic discharge into the electrical contacts. It is therefore desirable to provide a method and architecture for reprogramming a vehicle electronic unit while the unit remains installed in the vehicle.
Another issue that may befall the reprogramming architecture of a vehicle controller is a lack of structure in the controller's flashloader firmware which controls communication between the vehicle controller and a reprogramming tool, and also controls the reprogramming operation within the vehicle controller. A lack of structure, or poor structure, in the firmware causes the maintenance effort and verification time to increase each time a function is added to the firmware and the function must be ported to several vehicle controllers. Also, the structure of the firmware may dictate that a single party has knowledge of all aspects of the vehicle controller, including the microprocessor register map, the electrical specifications and schematic of the controller, and also the communication protocol with the reprogramming tool for the controller. With such a structure, the single party may be overburdened with technical concerns and unable to seek programming assistance without expending time training an assisting party on the constituent aspects of the controller. It is therefore desirable to provide a flashloader firmware architecture which facilitates portability and the division of programming effort and expertise among several contributors.